// #include <iostream>
// #include<string>
//
// #include<array>
// #include <ostream>
//
// using namespace std;
//
// /***
//  * array 定长数组
//  *
//  */
//
// void test_array()
// {
//     array<int,3> arr;
//     array<int,5> value = {1,2,3,4,5};
//
//     cout <<value.size() << endl;
//     cout << value.empty() << endl;
//
//     for (auto& v: value)
//     {
//         cout << v << " ";
//     }
//     cout << endl;
//
//     for (int i=0;i<value.size();i++)
//     {
//         cout << arr[i] << " ";
//     }
//     cout << endl;
//
//     array<int,5>::iterator iter;
//     for (iter = value.begin();iter!=value.end();iter++)
//     {
//         cout << *iter << " ";
//     }
//     cout << endl;
//
//     cout << value.front() << endl;
//     cout << value.end() << endl;
//
//     //交换
//     array<int,3> one{1,2,3};
//     array<int,3> two{2,3,4};
//     one.swap(two);
//     for (auto& v:one)
//     {
//         cout << v << " ";
//     }
//     cout << endl;
// }
//
// class MM
// {
// public:
//     MM()=default;
//     MM(string name,int age,int score):name(name),age(age),score(score)
//     {
//
//     }
//     string get_name()
//     {
//         return name;
//     }
//
//     friend std::ostream& operator<<(std::ostream& os, const MM& obj)
//     {
//          os
//             << "name: " << obj.name
//             << " age: " << obj.age
//             << " score: " << obj.score;
//         return os;
//     }
//
// protected:
//     string name;
//     int age;
//     int score;
// };
//
// void test_user_data()
// {
//     //构建无参的构造函数 准备无参构造函数
//     array<MM,5> mm;
//     string name;
//     int age;
//     int score;
//     for (int i=0;i<5;i++)
//     {
//         cout << i+1 << "次输入";
//         cin >> name >> age >> score;
//         mm[i] = MM(name,age,score);
//
//     }
//
//     //重载
//     for (MM v:mm)
//     {
//         cout << v.get_name() << endl;
//     }
// }
//
// int main()
// {
//     // test_array();
//     test_user_data();
// }